Printer technology has made rapid advances over recent years. Still, employing and controlling print services over a network may often be a cumbersome and difficult task.
In a typical printing process over a network environment, a user at a computer workstation typically uses print driver software to load documents or images into a buffer (usually an area on a disk of a workstation), where a printer pulls them off the buffer at its own rate. The user may also use the print driver software to manually adjust the print attributes, which instruct the printer on the proper processing of the document or image files. Print attributes typically include image options (e.g., resolution, background), image orientation (landscape, portrait, etc.), number of copies, colors, duplex (double-sided) or single-sided printing, and other printing parameters. The print driver also functions to convert the text, graphics and print attributes specified by the user's workstation into a set of codes that the printer can translate and/or read. The set of codes is typically a version of Printer Control Language (PCL), developed by Hewlett-Packard for its dot-matrix, inkjet, and LaserJet series printers. The version of PCL most commonly used as the printer coding language is Page Description Language (PDL). Once the text, graphics and print attributes have been converted to PDL, the PDL is transmitted by the workstation over the network where it is received by the printer as a “print job.” Examples of PDL's include Hewlett Packard's HP-GL/2 language and Adobe's PostScript®.
To assemble the print job, most workstations incorporate driver software that displays a graphical user interface (GUI). By using a mouse to “point and click,” and/or by keyboard entry, etc., the user selects the print attributes from a menu of options displayed in the GUI, thereby setting the components and print attributes to be used for the print job.
A network printer, however, can print only one job at a time, yet must be available at all times to multiple users. For this reason, local network architectures will typically incorporate a dedicated print server, also known as a print spooler. A print spooler is a device that accepts requests for printer resources, and then allocates the use of printer resource according to a set of specified rules. When a print spooler is present, users can send their data (e.g., PDL files) through the print spooler rather than directly to the printer. Upon receiving data destined for one or more printers, the print spooler writes this data into a temporary file instead of sending it immediately to a printer. For example, when multiple users initiate commands on their respective workstations to print a number of documents, the print spooler queues the documents by placing them in an interim holding area called a print buffer or print queue. The printer then pulls the documents off the queue one at a time. Later, when the printer becomes available, the print spooler will write the data to the printer.
As the printer receives the coded language from the printer driver, it stores the information in high capacity memory storage (job retention), which typically comprises random-access memory (RAM) or a hard disk. A stored print job thus comprises of one or more electronically stored files and the print attributes associated therewith. Before a typical print job (e.g., a PDL file) can be printed, however, its contents must be converted to a bit-mapped image format, also known as a raster image. The raster image is a bit-mapped representation of the document to be printed, with each bit in the bitmap representing the absence or presence of a dot (or pixel) on the printed page. A raster image processor (“RIP”) in the printer typically translates PDL files to a raster image, also called a “RIP'ed” version of the file. Thus, the print files include data representing graphical images and the RIP'ed version is generated from the print file. Typically, print jobs are RIP'ed before storage in job retention, making them “print ready files.” In some cases, print jobs are received by the printer in the form of raster image data. In that case, a processor in the printer may engage in pixel image manipulation when storing the print job.
Once the print job has been stored in print job retention, a user may check on the status of a print job and the owner of a document using, for example, a graphical user interface (e.g., a “printer window”). The user's ability to manage the stored jobs, however, is presently quite limited. For example, a typical printer window allows a user to locate printing information (such as the status of print jobs and the owner of a document), to cancel or pause the printing of any unprocessed documents the user has sent, and possibly to “promote” the user's document in priority in the print queue of the printer.
Thus, there is presently little a user can do to access the stored print job and/or alter the print attributes thereof using conventional software and system components. Consequently, a user that does not remember what has been stored in job retention may not be able to access the stored job to view its contents. Furthermore, many of today's printers allow print jobs to be stored permanently on a printer's hard disk for frequent, on-demand printing, such as in the case of repeatedly generated forms and other graphically intense documents. Once those print jobs have been processed and stored in printer memory, users are typically unable to manage or control any aspects of those jobs. Therefore, a need exists in the art for convenient methods and associated apparatus allowing increased control over print jobs which are pending and which have been processed and stored by a printer.